package daohibernate;

import hibernate.HibernateUtil;

import java.util.Iterator;
import java.util.Set;

import negocio.beans.central.OrdenDeCompra;


import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class OrdenDeCompraDAO {
	private static OrdenDeCompraDAO instancia = null;
	private static SessionFactory sf = null;	
	
	public static OrdenDeCompraDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new OrdenDeCompraDAO();
		} 
		return instancia;
	}	
	
	public void grabarOrdenCompra(OrdenDeCompra o){
		Session s = sf.openSession();
		s.beginTransaction();
		
		s.persist(o);
		
		s.flush();
		s.getTransaction().commit();
	}
	
	public void grabarOrdenesCompra(Set<OrdenDeCompra> ordenes){
		Session s = sf.openSession();
		s.beginTransaction();
		
		for(OrdenDeCompra elemento:ordenes){
			s.persist(elemento);
		}
		
		s.flush();
		s.getTransaction().commit();
	}
	
	public OrdenDeCompra obtenerOrdenCompra(String razonSocial){
		Session s = sf.openSession();

		@SuppressWarnings("unchecked")
		Iterator<Object> ordenes = s.createQuery("from OrdenDeCompra O join O.proveedor where O.proveedor.razonSocial = '" + razonSocial + "'").iterate();
		OrdenDeCompra o = new OrdenDeCompra();
		
		while(ordenes.hasNext()){
			Object[] tupla = (Object[]) ordenes.next();
			
			o = (OrdenDeCompra)tupla[0];
			
		}
		s.close();
		
		return o;
	}
}
